1. Field of the Invention
This invention relates to communication systems. Specifically, the present invention relates to serial communication systems.
2. Description of the Related Art
Serial Communications is a pervasive form of communications. For example, serial communications is used at the chip level to communicate information on a chip, at the device level to communicate information between components in a device and between devices such as computers to communicate information between computers. Serial communications is even used in modern day optical communications systems such as optical repeaters to transfer data between optical devices. Lastly, serial communications is used in disparate applications such as instrumentation or in data acquisition applications such as remote sensing.
There are a variety of parameters that classify a serial communications link. For example, a serial communications link may be classified as simplex meaning that there is one-way communication. Half-duplex, meaning that there is two-way communication, but in one-direction at a time or full duplex, meaning that there is two-way simultaneous communication. In addition, a serial communications link may be classified as asynchronous, meaning that a character is sent whenever a transmitting device is ready or synchronous, meaning that a block of characters are sent at a time.
During asynchronous serial communication a character (6–8 bits) is sent whenever available. The character (e.g. data bits) is typically encoded using a standardized coding scheme (e.g. ASCII). Timing in this type of serial communications is achieved using start and stop bits. In addition, there are several error parameters associated with asynchronous serial communications such as framing errors, overrun errors and parity errors. A framing error occurs when an incorrect stop bit is received. An overrun error occurs when new data is received before the previous data has been processed. Lastly, a parity error denotes that an incorrect parity bit has been received.
In synchronous serial communications, characters are sent one after the other in a block. Each block typically begins with one or more synchronization characters and ends with an end of frame character. A transmitter automatically inserts synchronization or null characters if information is not received fast enough. This helps to ensure synchronization between the transmitter and receiver. During synchronous serial operations, the receiver initially operates in hunt mode, checking the serial data stream until a synchronization character is detected. Once the synchronization character is detected the receiver synchronizes, reading the entire block of data. For large blocks of data, synchronous serial communications typically has less overhead and is therefore more efficient than asynchronous serial communications.
Equipment using serial communications often include a sub-component responsible for managing and performing the serial communications. The sub-component is a combination transmitter/receiver or transceiver. A conventional transceiver system is shown in FIG. 1. In FIG. 1 a sending device 100 communicates with a receiving device 102. A sending device clock 104 provides timing information for the sending device 100. A transmitter 110 receives timing information from a Phase Lock Loop (PLL) 106. The transmitter 110 reformats input data 108 into a serial bit stream 112. A receiver 114 in the receiving device 102, receives the serial bit stream 112. The receiver 114 generates a recovered clock 116 and recovered data 118, from the serial bit stream 112. Both the recovered clock 116 and the recovered data 118 are input into a core 120. The core 120 includes a First-In, First-Out (FIFO) buffer 122 which performs synchronization and frequency adjustment on the recovered data 118 based on a receiving device clock 124. A PLL 126 outputs timing information 128 based on the receiving device clock 124. The FIFO buffer 122 outputs synchronized data 130. The synchronized data 130, local data 132 and a test mode signal 134 are input into a multiplexer 136.
The multiplexer 136 generates multiplexer output data 138. During normal operations, the multiplexer output data 138 is equivalent to the local data 132. During test operation, the test mode signal 134 is made high and the multiplexer output data 138 is equivalent to the synchronized data 130. Timing information 128 which is based on the receiving device clock 124 and the multiplexer output data 138, serve as inputs for transmitter 140. Transmitter 140 generates a serial bit stream 142 based on timing information 128 and multiplexer output data 138. A receiver 144 in the sending device 100, receives the serial bit stream 142 and generates timing information 146 and receiver output data 148. The timing information 146, the receiver output data 148 and timing information output from the sending device clock 104, are input into a FIFO buffer 150. The FIFO buffer 150 then synchronizes the receiver output data 148 and performs a frequency adjustment on the receiver output data 148. FIFO buffer 150 generates FIFO output data 154 for testing. The FIFO output data 154 and the input data 108 are tested using a comparator 156. Indication of the integrity of the data is then output as a pass/fail signal 158.
During test mode, data is transmitted from the sending device 100, using the sending device clock 104 for timing information. The data and timing information are then received and output as recovered timing information 116 and recovered data 118. The recovered timing information 116 and the recovered data 118 are then synchronized to the receiving device clock 124, by the FIFO buffer 122. The synchronization of the recovered data 118, may result in adding and/or deleting data if the sending device clock 104 does not exactly match the receiving device clock 124.
After processing by the FIFO buffer 122, the data is then formatted as the serial bit stream 142, by the transmitter 140, using PLL 126 which received its timing information from receiving device clock 124. When the serial bit stream 142 is received by the sending device 100, timing information 146 and receiver output data 148 are generated. The timing information 146 and the receiver output data 148 are then re-synchronized with the sending device clock 104 in FIFO buffer 150. Since there are often frequency mismatches between the sending device clock 104 and the receiving device clock 124, FIFO buffer 150 has to re-synchronize the receiver output data 148, by adding and/or removing data. The sending device then has to compare the FIFO output data 154 with the input data 108 to determine the integrity of the transmission path. The comparator makes adjustments for the data that may have been added or deleted by the FIFO buffer 122, in the receiving device 102 and the data that may have been added or deleted by the FIFO buffer 150, in the sending device 100.
The processing resulting from the addition and deletion of data in the FIFO buffers 122 and 150, respectively, require complex FIFO buffers in both the sending device and the receiving device. In addition, since the comparator 156, has to take into account, the addition and deletion of data in FIFO buffers 122 and 150, the complexity of comparator 156 is also increased. More complex FIFO buffers and comparators result in an increased number of circuits required to implement these complex devices. Additional circuits take up a significant amount of real estate in an environment where the real estate is at a premium (e.g. a semiconductor chip). Additional circuits also introduce latency in the communications system. Further, the additional complexity introduces more opportunities for points of failure. Lastly, the additional complexity results in performance degradation in the system, since it takes time to perform the processing required by these devices.
As a result, there is a need in the art for a serial communication testing method, in which the receiving device does not have to synchronize the received data. There is a need in the art for a testing method in which the sending device is not required to re-synchronize the received data. There is a need in the art for a serial communication testing method in which the sending device does not have to adjust for the addition/deletion of data due to local clock mismatches. There is a need in the art to implement a serial communications system which minimizes the use of circuit real estate. Lastly, there is a need for a serial communications testing method, which implements a simple FIFO buffer and as a result, avoids the latency that occurs between transmitted data and received data.